package cn.unknowpupil.mapper.system;

import cn.unknowpupil.domain.system.SysUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

/**
 * Created at 2020-10-16 by  w10g <br>
 * Initialize SysUser  ... <br>
 * 管理员信息表 数据持久层处理
 *
 * @author unknowpupil
 * @since 0.0.1
 */
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {
    /**
     * 分页查询用户
     *
     * @param page
     * @param sysUser
     * @return
     */
    IPage<SysUser> page(@Param("page") IPage<SysUser> page, @Param("sysUser") SysUser sysUser);



    /**
     * 查询部门是否存在用户
     *
     * @param deptId 部门ID
     * @return 结果
     */
    Integer checkDeptExistUser(@Param("deptId") Long deptId);

    /**
     * 修改用户登录状态
     *
     * @param userId
     * @param loginIp
     * @param lastLoginDate
     * @return
     */
    boolean updateByUserId(@Param("userId") Long userId, @Param("loginIp") String loginIp, @Param("lastLoginDate") Date lastLoginDate);

    /**
     * 删除用户关联角色
     *
     * @param ids
     * @return
     */
    int removeUserRoleRelatedness(@Param("ids") Long[] ids);

    /**
     * 删除用户关联部门
     *
     * @param ids
     * @return
     */
    int removeUserPostRelatedness(@Param("ids") Long[] ids);

    /**
     * 新增用户与岗位管理
     *
     * @param posts
     * @param userId
     * @return
     */
    int insertUserPostRelatedness(@Param("posts") Long[] posts, @Param("userId") Long userId);

    /**
     * 新增用户与角色管理
     *
     * @param roles
     * @param userId
     * @return
     */
    int insertUserRoleRelatedness(@Param("roles") Long[] roles, @Param("userId") Long userId);

    /**
     * 删除用户部分管理
     *
     * @param userId
     * @return
     */
    int removeUserPostRelatednessByUserId(Long userId);

    /**
     * 删除用户角色管理
     *
     * @param userId
     * @return
     */
    int removeUserRoleRelatednessByUserId(Long userId);
}
